#
# This file is a part of the open-eBackup project.
# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
# If a copy of the MPL was not distributed with this file, You can obtain one at
# http://mozilla.org/MPL/2.0/.
#
# Copyright (c) [2024] Huawei Technologies Co.,Ltd.
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#

from enum import Enum


class Db2ErrCode:
    """
    返回给框架的错误码
    """
    # 通用代理执行任务时，由于插件鉴权失败，操作失败
    ERR_PLUGIN_CANNOT_BACKUP = 0x64032B0C

    # Agent增量备份无法进行，需要转成全量备份
    ERR_INC_TO_FULL = 0x5E02502D

    # 收到的请求参数不正确
    ERROR_COMMON_INVALID_PARAMETER = 1593987330

    # 错误场景：任务执行过程中，请求参数中部分参数非法，导致任务失败。
    # 原因：请求参数非法。
    # 建议：请收集日志并联系技术支持工程师协助解决。
    PARAMS_IS_INVALID = 1593988925

    #操作失败
    OPERATION_FAILED = 1677929219
    # 数据库不存在
    DATABASE_NOT_EXISTS = 1577210047
    # 数据库（{0}）状态异常 0: 数据库名称，xxx pending = xxx
    DATABASE_EXISTS_PENDING = 1577209952
    # 数据库未开启归档模式
    ARCHIVE_MODE_DISABLE = 1577210051

    # 已存在运行中的备份任务
    RUNNING_BACKUP_TASK_EXISTS = 1577209987
    # 数据库未开启增量备份
    INCREMENTAL_BACKUP_NOT_OPEN = 1577209982
    # 原因：执行命令（{0}）异常({1})。建议：请联系技术支持工程师协助解决。
    FAILED_EXECUTE_COMMAND = 1577209989
    # DB2数据库返回错误（{0}）。
    DATABASE_CRANKBACK_EXCEPTION = 1577210004
    # 数据库未执行离线备份
    DATABASE_NEED_OFFLINE_BACKUP = 1577210010
    # 用户不存在
    OS_USER_NOT_EXISTS = 1577210006
    # 原因：集群连通性校验失败。 建议：请登录主机检查节点（{0}）连通性。 0：节点1域名，节点2域名
    CHECK_CLUSTER_CONNECTIVITY_ABNORMAL = 1577210017
    # 目标表空间（{0}）不存在
    SPACE_NOT_EXISTS = 1577210022
    # 表空间（{0}）状态异常
    SPACE_STATUS_ABNORMAL = 1577210028
    # 源数据库实例（{0}）和目标数据库实例（{1}）不一致
    DB_INSTANCE_NOT_EQUAL = 1577210029
    # 源集群节点数（{0}）和目标集群节点数（{1}）不一致
    NODES_NUM_NOT_EQUAL = 1577210031
    # 源数据库实例分片信息（{0}）和目标数据库实例分片信息（{1}）不一致
    INSTANCE_CATALOG_NUM_NOT_EQUAL = 1577213573
    # 源数据库编目节点号（{0}）和目标数据库编目节点号（{1}）不一致
    DATABASE_CATALOG_NUM_NOT_EQUAL = 1577210033
    # 表空间源数据库名称（{0}）和目标数据库名称（{1}）不一致。
    SPACE_OF_DB_NOT_EQUAL = 1577210034
    # 数据库实例服务异常
    DB_SERVICE_ERROR = 1577209975
    # 数据库用户下不存在实例
    DB_USER_NOT_EXSIT = 1577209980
    # 数据库用户名密码不正确
    DB_INVALID_PASSWORD = 1577209986
    # 所选主机为集群节点。
    REGISTER_TYPE_ERROR = 1577210068
    # 添加的实例不属于同一集群
    INSTANCES_NOT_BELONG_SAME_CLUSTER = 1677931435
    # 添加的实例未包含该集群所有实例
    NOT_INCLUDE_ALL_CLUSTER_INSTANCES = 1677931434
    # 原因：数据库处于不可用状态。建议：请确保数据库状态为正常。
    ERR_DATABASE_STATUS = 1577210002
    # 数据库日志文件不全
    ERR_INVALID_LOG_COPY = 1577209918
    # DB2表空间集恢复限制
    TABLESPACES_DROP_TABLE = 1577210041
    # 原因：不存在全量/增量备份副本或不存在日志备份副本。建议：请对该备件集执行全量/增量备份后重试。
    NOT_EXIT_WAL_BACKUP_FILE_AND_SNAPSHOT_BACKUP = 1577209911
    # 原因：数据库已执行过恢复。建议：请重新执行全量备份后再进行日志备份。
    ERR_RESTORED = 1577210101
    # 实例类型不一致
    CLUSTER_TYPE_ERROR = 1577209937
    # 原因：日志归档超时。建议：请检查日志归档是否正常后重试。
    LOG_ARCHIVE_TIMEOUT = 1577210001
    # 原因：调用备份工具失败。 建议：请联系技术支持工程师协助解决
    USER_BACKUP_ERROR = 1577213505


class DB2Code(Enum):
    """
    返回给框架的code
    """
    SUCCESS = 0
    FAILED = 200
